import axios from 'axios'
import message from '@/composable/ElMessage'
import router from '@/router'
import { useTokenStore } from '@/stores/token'
const tokenStore = useTokenStore()

const http = axios.create({
    baseURL: '/api',
    timeout: 10000,
    headers: {
        'Content-Type': 'application/json'
    }
})

// 请求拦截器
http.interceptors.request.use(
    (config) => {
        if (tokenStore.token) {
            config.headers.Authorization = "Bearer " + tokenStore.token
        }
        return config
    },
    (error) => Promise.reject(error)
)

// 添加响应拦截器
http.interceptors.response.use(
    (response) => {
        // 摘取核心响应数据
        if (response.data.code === "200") {
            return response.data
        }

        // 处理业务失败
        message.error('获取数据失败')
        return Promise.reject(response.data)
    },
    (error) => {
        // 处理 401 错误
        if (error.response.data?.code == 401) {
            message.error('权限不足,请重新登录')
            router.push('/login')
        } else if (error.response.data?.code == 500) {
            message.error('服务异常')
        }
        message.error('服务异常')

        // 错误的普通情况 => 只给提示
        return Promise.reject(error)
    }
)


export default http